from django import forms
from .models import Task, SysUser, Group, Subtask


class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = [
            'title',             # 任务标题
            'description',       # 任务描述
            'min_group_size',    # 最小组员数
            'max_group_size',    # 最大组员数
            'deadline',          # 截止日期
            'scoring_criteria',  # 评分标准
            'sample',            # 标准样例文件
        ]
        widgets = {
            'deadline': forms.DateTimeInput(attrs={'type': 'datetime-local'}),
        }

    # 自定义 clean 方法以确保处理空文件字段
    def clean_sample(self):
        sample = self.cleaned_data.get('sample')
        if sample is None:
            return None  # 如果没有文件，返回 None
        return sample  # 如果上传了文件，返回文件对象


class SysUserForm(forms.ModelForm):
    class Meta:
        model = SysUser
        fields = [
            'username',    # 用户名
            #'nickname',    # 昵称
            'email',       # 邮箱
            'avatar',      # 用户头像
            'status',      # 用户状态
        ]


class GroupForm(forms.ModelForm):
    class Meta:
        model = Group
        fields = [
            'group_name',  # 小组名称
            'leader_id',   # 组长 ID
            'group_task',  # 任务 ID
            'members',     # 小组成员
        ]
        widgets = {
            'members': forms.CheckboxSelectMultiple(),
        }

class SubtaskForm(forms.ModelForm):
    class Meta:
        model = Subtask
        fields = [
            'group_id',
            'status',
            'task',            # 任务
            'assigned_to',     # 分配给的成员
            'start_date',      # 开始日期
            'end_date',        # 结束日期
            'description',     # 子任务描述
        ]
        widgets = {
            'start_date': forms.DateInput(attrs={'type': 'date'}),
            'end_date': forms.DateInput(attrs={'type': 'date'}),
        }